<?php

/*
 * This file is part of SwiftMailer. (c) 2009 Fabien Potencier <fabien.potencier@gmail.com> For the full copyright and license information, please view the LICENSE file that was distributed with this source code.
 */

/**
 * Interface for spools.
 * 
 * @package Swift
 * @author Fabien Potencier
 */
interface Swift_Spool {
	/**
	 * Starts this Spool mechanism.
	 */
	public function start();
	
	/**
	 * Stops this Spool mechanism.
	 */
	public function stop();
	
	/**
	 * Tests if this Spool mechanism has started.
	 *
	 * @return boolean
	 */
	public function isStarted();
	
	/**
	 * Queues a message.
	 * 
	 * @param Swift_Mime_Message $message
	 *        	The message to store
	 *        	
	 * @return boolean Whether the operation has succeeded
	 */
	public function queueMessage(Swift_Mime_Message $message);
	
	/**
	 * Sends messages using the given transport instance.
	 *
	 * @param Swift_Transport $transport
	 *        	A transport instance
	 * @param
	 *        	string[] &$failedRecipients An array of failures by-reference
	 *        	
	 * @return int The number of sent emails
	 */
	public function flushQueue(Swift_Transport $transport, &$failedRecipients = null);
}
